<?php

namespace Admin\Controller;

use Think\Controller;

class EmailController extends Controller
{
    public function get_expire()
    {
        //echo date('Y-m-d', time()); //05-05
        $now = strtotime(date('Y-m-d', time()));    // 获取当前时间戳
        // 获取两天后到期的节点机器　05-04提醒 05-06到期
        $expire = M('node')->where("status = 1")->getField('n_id, dqsj');
        if(empty($expire)) return false;
        $arr = array();
        foreach($expire as $k=>$v) {
          	// strtotime($v)-$now>0 表示已过期
          	// strtotime($v)-$now<=86400*2 表示两天后到期
            if(strtotime($v)-$now<=86400*2 && strtotime($v)-$now>0) {
                $one = M('node')->where("n_id = {$k}")->find();
                if(!empty($one)) $arr[] = $one;
            }
        }
        if(empty($arr)) return false;
        // 推送提醒
        $is_status = $this->get_html($arr);
        if(!$is_status) {
            sleep(30);    // 30S后继续推送
            $this->send_email($arr);
            // 继续推送
        }
        /*$filename = dirname(dirname(dirname(dirname(__FILE__)))).'/Public/expire.txt';
        $write = file_put_contents($filename, serialize($arr));
        if(!$write) {
            //发送邮件，文件写入失败
        } else {
            // 发送提醒
            $data = unserialize(file_get_contents($filename));
            //
        }*/
    }

    public function send_email($data='')
    {
        $html = $this->get_html($data);
        echo $html;
        exit;
        // 发送提醒
        return $this->send_config($html);
    }
  
  	public function get_html($data='')
    {
      	if(empty($data)) return false;
      	$html = '';
      	$html .= '<html lang="en">';
        $html .= '<head>';
        $html .= '<meta name="viewport" content="width=device-width, initial-scale=1.0">';
    	$html .= '<meta http-equiv="X-UA-Compatible" content="ie=edge">';
    	$html .= '<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css">';
        $html .= '<style>dl dd {float: left;width: 70%;line-height: 30px;}</style>';
        $html .= '<head>';
        $htnl .= '<body>';
        $html .= '<div class="">';
        foreach($data as $k=>$v) {
          $html .= '<div class="row">';
          $html .= '<div class="col-sm-12">';
          $html .= '<div class="panel panel-default" style="margin-top:-15px;">';
          $html .= '<div class="panel-body">';
          $html .= '<dl style="margin: -10px 0 0 0;">';
          $html .= "<dd>节点名称：{$v['jdmc']}</dd>";
          $html .= "<dd>生产厂家：{$v['sccj']}</dd>";
          $html .= "<dd>所在地域：{$v['szdy']}</dd>";
          $html .= "<dd>ip：{$v['ip']}</dd>";
          $html .= "<dd>购买日期：{$v['gmrq']}</dd>";
          $html .= "<dd>到期时间：{$v['dqsj']}</dd>";
          $html .= "<dd>节点类型：{$v['jdlx']}</dd>";
          $html .= "<dd>机器类型：{$v['jqlx']}</dd>";
          $html .= "<dd>备注：{$v['desc']}</dd>";
          $html .= '</dl>';
          $html .= '</div>';
          $html .= '</div>';
          $html .= '</div>';
          $html .= '</div>';
          $html .= '<div style="margin-top:20px;height:1px;"></div>';
      	}
        $html .= '</div>';
        $html .= '</body>';
        $html .= '</html>';
  		return $this->send_config($html);
    }

	public function send_config($html)
    {
        //******************** 配置信息 ********************************
        $smtpserver = "ssl://smtp.163.com"; //SMTP服务器
        $smtpserverport = 465;   //SMTP服务器端口
        $smtpusermail = "ejzwlkj@163.com";  //SMTP服务器的用户邮箱
        $smtpemailto = "18279909645@163.com";   //发送给谁
        $smtpuser = "ejzwlkj@163.com";  //SMTP服务器的用户帐号，注：部分邮箱只需@前面的用户名
        $smtppass = "2jz5566";  //SMTP服务器的授权码
        $mailtitle = '到期提醒';    //邮件主题
        $mailcontent = $html;   //邮件内容
        $mailtype = "HTML"; //邮件格式（HTML/TXT）,TXT为文本邮件
        //************************ 配置信息 ****************************
        $smtp = new Smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass); //这里面的一个true是表示使用身份验证,否则不使用身份验证.
        $smtp->debug = false;//是否显示发送的调试信息
        $state = $smtp->sendmail($smtpemailto, $smtpusermail, $mailtitle, $mailcontent, $mailtype);
        return $state;
    }

}